package entity

import (
	"core/models/db"
	"go.mongodb.org/mongo-driver/bson/primitive"
)

type User struct {
	Id            primitive.ObjectID `bson:"_id,omitempty" json:"id,omitempty"`
	Uid           uint               `bson:"uid" json:"uid"`                 // 用户唯一ID
	Sid           uint64             `bson:"sid" json:"sid"`                 // socket id
	Status        int                `bson:"status" json:"status"`           // 是否冻结帐号
	RealMsg       RealMsg            `bson:"realMsg" json:"realMsg"`         // 实名认证信息
	WalletID      uint               `bson:"wallet_id" json:"wallet_id"`     // 钱包id
	MobilePhone   string             `bson:"mobilePhone" json:"mobilePhone"` // 绑定的手机
	InviteCode    int64              `bson:"inviteCode" json:"inviteCode"`   // 邀请码
	InviteMsg     InviteMsg          `bson:"inviteMsg" json:"inviteMsg"`
	IsVIP         bool               `bson:"isVIP" json:"isVIP"`                 // 是否是VIP
	BuyCardNum    int64              `bson:"buyCardNum" json:"buyCardNum"`       // 购买卡券数量
	IsTranPwd     bool               `bson:"isTranPwd" json:"isTranPwd"`         //是否设置交易密码
	CreateTime    db.XTime           `bson:"createTime" json:"createTime"`       // 创建时间
	Nickname      string             `bson:"nickname" json:"nickname"`           // 昵称
	Avatar        string             `bson:"avatar" json:"avatar"`               // 头像
	LastLoginTime int64              `bson:"lastLoginTime" json:"lastLoginTime"` // 最后登录时间
	ClubMsg       ClubMsg            `bson:"clubMsg" json:"clubMsg"`             // 俱乐部信息
	Address       string             `bson:"address" json:"address"`             // 地理位置经纬度
	LastLoginIp   string             `bson:"lastLoginIp" json:"lastLoginIp"`     // 最后登录IP
}

type InviteMsg struct {
	Uid      uint   `bson:"uid" json:"uid"`           // 邀请人ID
	Nickname string `bson:"nickname" json:"nickname"` // 邀请人名字
}
type ClubMsg struct {
	ClubId   uint   `bson:"club_id" json:"club_id"`     // 俱乐部ID
	ClubName string `bson:"club_name" json:"club_name"` // 俱乐部名字
}

type RealMsg struct {
	Name   string `bson:"name" json:"name"`       // 姓名
	IDCard string `bson:"id_card" json:"id_card"` // 身份证
}

type VipOrder struct {
	Id            primitive.ObjectID `bson:"_id,omitempty" json:"id,omitempty"`
	UID           uint               `bson:"uid" json:"uid"`                     // 用户ID
	VipID         uint               `bson:"vipID" json:"vipID"`                 // 月卡id
	Type          int                `bson:"types" json:"types"`                 //1=rmb,0=材料
	OrderNo       string             `bson:"orderNo" json:"orderNo"`             // 订单号
	VipName       string             `bson:"vipName" json:"vipName"`             // 月卡名字
	VipPrice      float64            `bson:"vipPrice" json:"vipPrice"`           // 月卡价格
	VipTerm       int64              `bson:"vipTerm" json:"vipTerm"`             // 月卡期限
	PayStatus     int                `bson:"payStatus" json:"payStatus"`         //0=待支付,1=已支付,-1=关闭
	CreateTime    int64              `bson:"createTime" json:"createTime"`       //创建时间
	PayTime       string             `bson:"payTime" json:"payTime"`             //支付时间
	PayNotify     string             `bson:"payNotify" json:"payNotify"`         //支付回调
	ConsumeTypeID uint               `bson:"consumeTypeID" json:"consumeTypeID"` //消耗类型id
	ConsumeName   string             `bson:"consumeName" json:"consumeName"`     //消耗类型名字
	ConsumeImg    string             `bson:"consumeImg" json:"consumeImg"`       //消耗类型图片
	ConsumeNum    int64              `bson:"consumeNum" json:"consumeNum"`       //消耗数量
	CancelTime    string             `bson:"cancelTime" json:"cancelTime"`       //取消时间
}

type VipReceive struct {
	Id          primitive.ObjectID `bson:"_id,omitempty" json:"id,omitempty"`
	UID         uint               `bson:"uid" json:"uid"`                 //用户ID
	VipID       uint               `bson:"vipID" json:"vipID"`             //月卡id
	VipName     string             `bson:"vipName" json:"vipName"`         //月卡名字
	VipReward   []VipReward        `bson:"vipReward" json:"vipReward"`     //月卡奖励
	Dates       string             `bson:"dates" json:"dates"`             //领取日期
	ReceiveTime string             `bson:"receiveTime" json:"receiveTime"` //领取时间
}
type VipReward struct {
	TypeID     uint   `bson:"typeID" json:"typeID"`
	TypeName   string `bson:"typeName" json:"typeName"`
	TypeImg    string `bson:"typeImg" json:"typeImg"`
	TypeModule string `bson:"typeModule" json:"typeModule"`
	TypeType   int    `bson:"typeType" json:"typeType"`
	Num        int64  `bson:"num" json:"num"`
}

type UserSignLog struct {
	Id            primitive.ObjectID `bson:"_id,omitempty" json:"id,omitempty"`
	UID           uint               `bson:"uid" json:"uid"`
	Round         int64              `bson:"round" json:"round"`                 //签到轮次
	CumulativeDay int64              `bson:"cumulativeDay" json:"cumulativeDay"` //累计签到天数
	SignID        uint               `bson:"signID" json:"signID"`               //签到id
	SignDay       int64              `bson:"signDay" json:"signDay"`             //签到天数
	TypeID        uint               `bson:"typeID" json:"typeID"`               //签到类型id
	TypeName      string             `bson:"typeName" json:"typeName"`           //签到类型名字
	TypeImg       string             `bson:"typeImg" json:"typeImg"`             //签到类型图片
	Num           int64              `bson:"num" json:"num"`                     //签到奖励数量
	Dates         string             `bson:"dates" json:"dates"`
	SignTime      string             `bson:"signTime" json:"signTime"` //签到时间
}

type UserAlipayNotifyLog struct {
	Id        primitive.ObjectID `bson:"_id,omitempty" json:"id,omitempty"`
	UID       uint               `bson:"uid" json:"uid"`
	Extension string             `bson:"extension" json:"extension"` //扩展字段
	OrderNo   string             `bson:"orderNo" json:"orderNo"`     //订单号
	Status    string             `bson:"status" json:"status"`       //状态
	DataJson  any                `bson:"dataJson" json:"dataJson"`   //数据json
	AddTime   string             `bson:"addTime" json:"addTime"`     //添加时间
}

type UserLottery struct {
	Id              primitive.ObjectID `bson:"_id,omitempty" json:"id,omitempty"`
	UID             uint               `bson:"uid" json:"uid"`                         //用户ID
	ConsumeTypeID   uint               `bson:"consumeTypeID" json:"consumeTypeID"`     //消耗类型id
	ConsumeTypeName string             `bson:"consumeTypeName" json:"consumeTypeName"` //消耗类型名字
	ConsumeTypeImg  string             `bson:"consumeTypeImg" json:"consumeTypeImg"`   //消耗类型图片
	ConsumeNum      int64              `bson:"consumeNum" json:"consumeNum"`           //消耗数量
	LotteryRand     int64              `bson:"lotteryRand" json:"lotteryRand"`         //抽奖随机数
	LotteryID       uint               `bson:"lotteryID" json:"lotteryID"`             //抽奖id
	LotteryType     bool               `bson:"lotteryType" json:"lotteryType"`         //抽奖类型 是否是实物
	LotteryName     string             `bson:"lotteryName" json:"lotteryName"`         //抽奖名字
	LotteryImg      string             `bson:"lotteryImg" json:"lotteryImg"`           //抽奖图片
	LotteryNum      int64              `bson:"lotteryNum" json:"lotteryNum"`           //抽奖数量
	AddTime         string             `bson:"addTime" json:"addTime"`                 //添加时间
}
